#!/bin/bash

# sintaxis de llamada
# Mover_B <origen> <destino> <comando> 
# <origen> desde donde se toma al archivo
# <destino> donde se mueve el archivo
# <comando> comando que ejecuta el Mover_B



function Mover_B
{
if [ -z "${GRUPO}" -o -z "${BINDIR}" ]; then
        source Grabar_L
else
        auxDir="${GRUPO}"/"${BINDIR}"
        source "${auxDir}"/Grabar_L
fi



# ================== variables del script       ================== 

Origen="$1"
Destino="$2"
Comando="$3"

# ================== validaciones de parámetros ================== 

# valido cantidad de parametros
if [ $# -lt 2 ] || [ $# -gt 3 ] ; then
	Grabar_L "Mover_B" "Cantidad de Parámetros Incorrectos, se espera: <origen> <destino> <comando>" "E";
	exit	4;
fi	

# valido que el origen y el destino no sean el mismo
if [ "$Origen" = "$Destino" ]; then
	Grabar_L "Mover_B" "Origen y Destino Son Iguales, no se mueve Archivo" "E"
	exit	4;
fi	

# valido que existe archivo en origen
if [ ! -f "$Origen" ] ; then
	Grabar_L "Mover_B" "Archivo $Origen no existe, no se mueve Archivo" "E"
	exit	4;
fi	

# valido que existe directorio en destino
Destino_Path="${Destino%/*}"
if [ ! -d "$Destino_Path" ] ; then
	Grabar_L "Mover_B" "Directorio $Destino_Path no existe, no se mueve Archivo" "E"
	exit	4;
fi	

NombreArchivo="${Origen##*/}"  # me quedo con el nombre del archivo
Destino="${Destino%/*}"        # quito la última barra pues podría venir con o sin la /
Destino_dup="$Destino/dup"   # guardo path para duplicados
Destino="$Destino/$NombreArchivo" # concateno path + nombre de archivo

# ================== validación de archivos duplicados ================== 

# valido si el archivo ya existe en el directorio
if [ -f "$Destino" ]; then

	if [ ! -d "$Destino_dup" ]; then
		mkdir	"$Destino_dup" # creo directorio para duplicados
		Grabar_L "Mover_B" "Creo Directorio $Destino_dup" "I"
		Destino_dup="$Destino_dup/$NombreArchivo" # nombre en duplicado
		version="001"
	else
		Destino_dup="$Destino_dup/$NombreArchivo" # nombre en duplicado
		version=`ls -l "$Destino_dup"* 2>/dev/null | sort | grep -Eo "[0-9]{3}$" | tail -n 1`; # obtengo ultima version
		if [ -z $version ]; then
			version="001"
		else
			version=`expr $version+1 | bc` # sumo 1 a la version
		fi
	fi
	version=`printf "%03d\n" $version` # relleno de ceros
	Destino_dup="$Destino_dup.$version" # concateno path + nombre de archivo
	mv	"$Origen" "$Destino_dup"
	Grabar_L "Mover_B" "Muevo $Origen a $Destino_dup" "I"
else
	mv	"$Origen" "$Destino"
	Grabar_L "Mover_B" "Muevo $Origen a $Destino" "I"
fi
}


if [[ $BASH_SOURCE == $0 ]]; then
	Mover_B "$@"
fi

